package com.itcam.binarysearch;

/**
 * @author : Cammy.Wu
 * Description : 
 */

public class BinarySearchTest01 {
    public static void main(String[] args) {
        int[] nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        System.out.println(binarySearch(nums, 5));
    }

    public static int binarySearch(int[] a, int target) {
        int i = 0, j = a.length - 1;
        while (i <= j) {
            // >>：算术右移，保留符号位，适用于有符号整数。
            // >>>：逻辑右移，不保留符号位，适用于无符号整数。
            int m = (i + j) >>> 1;
            if (target < a[m]) {            // 在左边
                j = m - 1;
            } else if (a[m] < target) {        // 在右边
                i = m + 1;
            } else {
                return m;
            }
        }
        return -1;
    }
}
